A “virtual machine” or a “VM” refers to a specific software-based implementation of a machine in a virtualization environment, in which the hardware resources of a real computer (e.g., CPU, memory, etc.) are virtualized or transformed into the underlying support for the fully functional virtual machine that can run its own operating system and applications on the underlying physical resources just like a real computer.
Virtualization works by inserting a thin layer of software directly on the computer hardware or on a host operating system. This layer of software contains a virtual machine monitor or “hypervisor” that allocates hardware resources dynamically and transparently. Multiple operating systems run concurrently on a single physical computer and share hardware resources with each other. By encapsulating an entire machine, including CPU, memory, operating system, and network devices, a virtual machine is completely compatible with most standard operating systems, applications, and device drivers. Most modern implementations allow several operating systems and applications to safely run at the same time on a single computer, with each having access to the resources it needs when it needs them.
Virtualization allows one to run multiple virtual machines on a single physical machine, with each virtual machine sharing the resources of that one physical computer across multiple environments. Different virtual machines can run different operating systems and multiple applications on the same physical computer.
One reason for the broad adoption of virtualization in modern business and computing environments is because of the resource utilization advantages provided by virtual machines. Without virtualization, if a physical machine is limited to a single dedicated operating system, then during periods of inactivity by the dedicated operating system the physical machine is not utilized to perform useful work. This is wasteful and inefficient if there are users on other physical machines which are currently waiting for computing resources. To address this problem, virtualization allows multiple VMs to share the underlying physical resources so that during periods of inactivity by one VM, other VMs can take advantage of the resource availability to process workloads. This can produce great efficiencies for the utilization of physical devices, and can result in reduced redundancies and better resource cost management.
Furthermore, there are now products that can aggregate multiple physical machines, running virtualization environments to not only utilize the processing power of the physical devices to aggregate the storage of the individual physical devices to create a logical storage pool wherein the data may be distributed across the physical devices but appears to the virtual machines to be part of the system that the virtual machine is hosted on. Such systems operate under the covers by using metadata, which may be distributed and replicated any number of times across the system, to locate the indicated data. These systems are commonly referred to as clustered systems, wherein the resources of the group are pooled to provide logically combined, but physically separate systems.
Mobile devices capable of autonomous locomotion, such as unmanned aerial vehicles (UAVs), self-driving cars and trains, autonomous marine systems, robots, and other similar mobile devices may be controlled by a variety of methods (e.g., as provided by human operators), such as, by way of example and not limitation: direct control of the device's components (e.g., steering mechanism, throttle, brake(s), cameras, lights); task-level instructions (e.g., “at 3:45 PM on Jan. 23, 2016, driverless car to drive from 387 Soda Hall, Berkeley, Calif. 94720 to 475 Via Ortega, Stanford, Calif. 94305”); or mission-level instructions (e.g., “UAV swarm to monitor airspace around the airport, to provide alerts regarding significant changes in atmospheric conditions, lighting conditions, and chemical contamination, and to deter approach and intrusion by objects exceeding a specified size” or “vacuum floor daily at 11:00 AM”).
Such mobile devices capable of autonomous locomotion have become increasingly commoditized, and technology that was once only available to the government for special military operations is available to private enterprises and individuals. Conventionally, such commoditized devices may be sold with a device controller. Such conventional device controllers may provide direct control of the device's components, and in some cases, may also or alternatively provide the ability to process task-level instructions or mission-level instructions.